package com.example.testing.lifecycle;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.example.testing.R;

public class DialogActivity extends Activity {
    private static final String TAG = "DialogActivity";
    /**
     * 表示Activity正在被创建，这是生命周期的第一个方法。
     * 在这个方法里，我们可以做一些初始化的工作
     * 比如调用setContentView去加载界面布局资源、初始化Activity所需要的数据
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.e(TAG, "onCreate: " );
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
    }

    /**
     * 表示Activity正在重新启动。一般情况下，当当前Activity从不可见重新变为可见状态时，onRestart就会被调用
     * 这种情形一般是用户行为所导致，比如用户按Home键切换到桌面或者用户打开了一个新的Activity，这时当前的Activity就会暂停，也就是
     * onPause和onStop被执行了，接着用户又回到了这个Activity,就会出现这种情况
     */
    @Override
    protected void onRestart() {
        Log.e(TAG, "onRestart: ");
        super.onRestart();
    }

    /**
     * 表示Activity正在被启动，即将开始，这时Activity已经可见了，但是还没有出现在前台
     * 还无法和用户交互。这时候可以理解为Actiivty已经展示出来了，但是我们看不到
     */
    @Override
    protected void onStart() {
        Log.e(TAG, "onStart: ");
        super.onStart();
    }

    /**
     * 表示Activity已经可见了，并且出现在前台开始活动。要注意这个和onStart的对比。
     * onStart和onResume都表示Activity已经可见了，但是onStart的时候Activity还在后台，
     * onResume的时候，Activity才显示到前台
     */
    @Override
    protected void onResume() {
        Log.e(TAG, "onResume: ");
        super.onResume();
    }

    /**
     * 表示Activity正在停止，正常情况下，紧接着onStop就会被调用。
     * 在特定情况下，如果这时候快速地回到当前Activity，那么onResume会被调用。
     * 此时可以做一些存储数据、停止动画等工作，但是注意不能太耗时，因为这回影响到新Activity的显示
     * 旧Activity的onPause方法执行完以后，新的Activity的onResume方法才会得到执行
     */
    @Override
    protected void onPause() {
        Log.e(TAG, "onPause: ");
        super.onPause();
    }

    /**
     * 表示Activity即将停止，可以做一些稍微重量级的回收工作，同样不能太耗时
     */
    @Override
    protected void onStop() {
        Log.e(TAG, "onStop: ");
        super.onStop();
    }

    /**
     * 表示Activity即将销毁，这是Activity生命周期的最后一个回调，在这里 ，我们可以做一些回收工作和最终的资源释放
     * 从导航栏中清除app,并不会回调该方法
     * Transparent
     */
    @Override
    protected void onDestroy() {
        Log.e(TAG, "onDestroy: ");
        super.onDestroy();
    }
}
